Skip to content

#254 integrate libs#76

Open
mumenthalers wants to merge 67 commits intomainfrom
#254-integrate-libs
Open

#254 integrate libs#76
mumenthalers wants to merge 67 commits intomainfrom
#254-integrate-libs

Conversation

@mumenthalers
Copy link
Contributor

No description provided.

mumenthalers and others added 30 commits February 5, 2026 10:14
 - @shiftcode/inversify-logger@2.1.0-pr254.0
 - @shiftcode/nest-logger@2.1.0-pr254.0
BREAKING-CHANGE:
newly added to sc-commons-public
BREAKING-CHANGE:
newly added to sc-commons-public
BREAKING-CHANGE:
newly added to sc-commons-public
BREAKING-CHANGE:
newly added to sc-commons-public
BREAKING-CHANGE:
newly added to sc-commons-public
even if there are no test at all
 - @shiftcode/cdk-utilities@0.0.0-pr254.1
 - @shiftcode/iac-utilities@0.0.0-pr254.1
 - @shiftcode/inversify-logger@0.0.0-pr254.1
 - @shiftcode/lambda-utilities@0.0.0-pr254.1
 - @shiftcode/nest-logger@0.0.0-pr254.1
BREAKING-CHANGE:
newly added to sc-commons-public
BREAKING-CHANGE:
newly added to sc-commons-public
 - @shiftcode/airtable-mapper@0.0.0-pr254.2
 - @shiftcode/airtable-syncer@0.0.0-pr254.2
 - @shiftcode/cdk-utilities@0.0.0-pr254.2
 - @shiftcode/iac-utilities@0.0.0-pr254.2
 - @shiftcode/inversify-logger@0.0.0-pr254.2
 - @shiftcode/lambda-utilities@0.0.0-pr254.2
 - @shiftcode/nest-logger@0.0.0-pr254.2
mumenthalers and others added 7 commits February 6, 2026 15:47
BREAKING CHANGE:
- `fetchSsmStringParamValue` now exported from `@shiftcode/lambda-utilities/ssm`
- `S3Helper` now exported from `@shiftcode/lambda-utilities/s3`
 - @shiftcode/airtable-mapper@0.0.0-pr254.6
 - @shiftcode/airtable-syncer@0.0.0-pr254.6
 - @shiftcode/branch-utilities@6.0.0-pr254.3
 - @shiftcode/cdk-utilities@0.0.0-pr254.6
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.3
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.3
 - @shiftcode/iac-utilities@0.0.0-pr254.6
 - @shiftcode/inversify-logger@0.0.0-pr254.6
 - @shiftcode/lambda-utilities@0.0.0-pr254.6
 - @shiftcode/logger@5.0.0-pr254.3
 - @shiftcode/nest-logger@0.0.0-pr254.6
 - @shiftcode/publish-helper@6.0.0-pr254.3
 - @shiftcode/utilities@5.0.0-pr254.3
actions-user and others added 20 commits February 6, 2026 16:14
 - @shiftcode/airtable-mapper@1.0.0-pr254.1
 - @shiftcode/airtable-syncer@1.0.0-pr254.1
 - @shiftcode/branch-utilities@6.0.0-pr254.4
 - @shiftcode/cdk-utilities@1.0.0-pr254.1
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.4
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.4
 - @shiftcode/iac-utilities@1.0.0-pr254.1
 - @shiftcode/inversify-logger@1.0.0-pr254.1
 - @shiftcode/lambda-utilities@1.0.0-pr254.1
 - @shiftcode/logger@5.0.0-pr254.4
 - @shiftcode/nest-logger@1.0.0-pr254.1
 - @shiftcode/publish-helper@6.0.0-pr254.4
 - @shiftcode/utilities@5.0.0-pr254.4
 - @shiftcode/airtable-mapper@1.0.0-pr254.2
 - @shiftcode/airtable-syncer@1.0.0-pr254.2
 - @shiftcode/branch-utilities@6.0.0-pr254.5
 - @shiftcode/cdk-utilities@1.0.0-pr254.2
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.5
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.5
 - @shiftcode/iac-utilities@1.0.0-pr254.2
 - @shiftcode/inversify-logger@1.0.0-pr254.2
 - @shiftcode/lambda-utilities@1.0.0-pr254.2
 - @shiftcode/logger@5.0.0-pr254.5
 - @shiftcode/nest-logger@1.0.0-pr254.2
 - @shiftcode/publish-helper@6.0.0-pr254.5
 - @shiftcode/utilities@5.0.0-pr254.5
 - @shiftcode/airtable-mapper@1.0.0-pr254.3
 - @shiftcode/airtable-syncer@1.0.0-pr254.3
 - @shiftcode/branch-utilities@6.0.0-pr254.6
 - @shiftcode/cdk-utilities@1.0.0-pr254.3
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.6
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.6
 - @shiftcode/iac-utilities@1.0.0-pr254.3
 - @shiftcode/inversify-logger@1.0.0-pr254.3
 - @shiftcode/lambda-utilities@1.0.0-pr254.3
 - @shiftcode/logger@5.0.0-pr254.6
 - @shiftcode/nest-logger@1.0.0-pr254.3
 - @shiftcode/publish-helper@6.0.0-pr254.6
 - @shiftcode/utilities@5.0.0-pr254.6
 - @shiftcode/airtable-mapper@1.0.0-pr254.4
 - @shiftcode/airtable-syncer@1.0.0-pr254.4
 - @shiftcode/branch-utilities@6.0.0-pr254.7
 - @shiftcode/cdk-utilities@1.0.0-pr254.4
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.7
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.7
 - @shiftcode/iac-utilities@1.0.0-pr254.4
 - @shiftcode/inversify-logger@1.0.0-pr254.4
 - @shiftcode/lambda-utilities@1.0.0-pr254.4
 - @shiftcode/logger@5.0.0-pr254.7
 - @shiftcode/nest-logger@1.0.0-pr254.4
 - @shiftcode/publish-helper@6.0.0-pr254.7
 - @shiftcode/utilities@5.0.0-pr254.7
 - @shiftcode/airtable-mapper@1.0.0-pr254.5
 - @shiftcode/airtable-syncer@1.0.0-pr254.5
 - @shiftcode/branch-utilities@6.0.0-pr254.8
 - @shiftcode/cdk-utilities@1.0.0-pr254.5
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.8
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.8
 - @shiftcode/iac-utilities@1.0.0-pr254.5
 - @shiftcode/inversify-logger@1.0.0-pr254.5
 - @shiftcode/lambda-utilities@1.0.0-pr254.5
 - @shiftcode/logger@5.0.0-pr254.8
 - @shiftcode/nest-logger@1.0.0-pr254.5
 - @shiftcode/publish-helper@6.0.0-pr254.8
 - @shiftcode/utilities@5.0.0-pr254.8
 - @shiftcode/airtable-mapper@1.0.0-pr254.6
 - @shiftcode/airtable-syncer@1.0.0-pr254.6
 - @shiftcode/branch-utilities@6.0.0-pr254.9
 - @shiftcode/cdk-utilities@1.0.0-pr254.6
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.9
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.9
 - @shiftcode/iac-utilities@1.0.0-pr254.6
 - @shiftcode/inversify-logger@1.0.0-pr254.6
 - @shiftcode/lambda-utilities@1.0.0-pr254.6
 - @shiftcode/logger@5.0.0-pr254.9
 - @shiftcode/nest-logger@1.0.0-pr254.6
 - @shiftcode/publish-helper@6.0.0-pr254.9
 - @shiftcode/utilities@5.0.0-pr254.9
 - @shiftcode/airtable-mapper@1.0.0-pr254.7
 - @shiftcode/airtable-syncer@1.0.0-pr254.7
 - @shiftcode/branch-utilities@6.0.0-pr254.10
 - @shiftcode/cdk-utilities@1.0.0-pr254.7
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.10
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.10
 - @shiftcode/iac-utilities@1.0.0-pr254.7
 - @shiftcode/inversify-logger@1.0.0-pr254.7
 - @shiftcode/lambda-utilities@1.0.0-pr254.7
 - @shiftcode/logger@5.0.0-pr254.10
 - @shiftcode/nest-logger@1.0.0-pr254.7
 - @shiftcode/publish-helper@6.0.0-pr254.10
 - @shiftcode/utilities@5.0.0-pr254.10
 - @shiftcode/airtable-mapper@1.0.0-pr254.8
 - @shiftcode/airtable-syncer@1.0.0-pr254.8
 - @shiftcode/branch-utilities@6.0.0-pr254.11
 - @shiftcode/cdk-utilities@1.0.0-pr254.8
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.11
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.11
 - @shiftcode/iac-utilities@1.0.0-pr254.8
 - @shiftcode/inversify-logger@1.0.0-pr254.8
 - @shiftcode/lambda-utilities@1.0.0-pr254.8
 - @shiftcode/logger@5.0.0-pr254.11
 - @shiftcode/nest-logger@1.0.0-pr254.8
 - @shiftcode/publish-helper@6.0.0-pr254.11
 - @shiftcode/utilities@5.0.0-pr254.11
 - @shiftcode/airtable-mapper@1.0.0-pr254.9
 - @shiftcode/airtable-syncer@1.0.0-pr254.9
 - @shiftcode/branch-utilities@6.0.0-pr254.12
 - @shiftcode/cdk-utilities@1.0.0-pr254.9
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.12
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.12
 - @shiftcode/iac-utilities@1.0.0-pr254.9
 - @shiftcode/inversify-logger@1.0.0-pr254.9
 - @shiftcode/lambda-utilities@1.0.0-pr254.9
 - @shiftcode/logger@5.0.0-pr254.12
 - @shiftcode/nest-logger@1.0.0-pr254.9
 - @shiftcode/publish-helper@6.0.0-pr254.12
 - @shiftcode/utilities@5.0.0-pr254.12
 - @shiftcode/airtable-mapper@1.0.0-pr254.10
 - @shiftcode/airtable-syncer@1.0.0-pr254.10
 - @shiftcode/branch-utilities@6.0.0-pr254.13
 - @shiftcode/cdk-utilities@1.0.0-pr254.10
 - @shiftcode/eslint-config-recommended@7.0.0-pr254.13
 - @shiftcode/eslint-plugin-rules@6.0.0-pr254.13
 - @shiftcode/iac-utilities@1.0.0-pr254.10
 - @shiftcode/inversify-logger@1.0.0-pr254.10
 - @shiftcode/lambda-utilities@1.0.0-pr254.10
 - @shiftcode/logger@5.0.0-pr254.13
 - @shiftcode/nest-logger@1.0.0-pr254.10
 - @shiftcode/publish-helper@6.0.0-pr254.13
 - @shiftcode/utilities@5.0.0-pr254.13
@michaelwittwer michaelwittwer requested a review from Copilot March 11, 2026 06:46
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Integrates multiple internal libraries into the monorepo while standardizing tooling (Vitest, ESLint flat config, Prettier, lint-staged, commitlint) and introducing new packages/utilities.

Changes:

  • Migrates tests from Jest to Vitest across packages (configs + spec updates) and introduces shared tsconfig.spec.json usage.
  • Adds new packages (@shiftcode/nest-logger, @shiftcode/inversify-logger, @shiftcode/lambda-utilities, @shiftcode/iac-utilities, @shiftcode/airtable-*, @shiftcode/cdk-utilities) and new utilities (e.g., uniqueWith).
  • Reworks repo/tooling configuration (Prettier config, lint-staged, commitlint, ESLint recommended config updates, Node engine/version updates, CI matrix changes).

Reviewed changes

Copilot reviewed 291 out of 303 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
tsconfig.jest.json Removes Jest-specific TS config (part of Vitest migration).
prettier.config.js Adds repo-wide Prettier config in JS.
lint-staged.config.js Adds root lint-staged config.
commitlint.config.js Adds commitlint config using conventional preset.
package.json Updates root tooling deps (adds Vitest, updates commitlint, moves lerna/tslib).
README.md Expands package list + adds utility command docs.
.prettierrc.yml Removes old YAML Prettier config.
.prettierignore Removes ignore file (previously ignored dist/).
.lintstagedrc.yml Removes old YAML lint-staged config.
.commitlintrc.yml Removes old YAML commitlint config.
.github/workflows/main.yml Updates CI Node matrix + publication permissions/token handling.
packages/utilities/vitest.config.js Adds per-package Vitest config forwarding to root config.
packages/utilities/tsconfig.spec.json Adds spec TS config extending root tsconfig.spec.json.
packages/utilities/tsconfig.lint.json Switches to shared lint TS config + broader include.
packages/utilities/tsconfig.json Simplifies tsconfig compilerOptions.
packages/utilities/src/lib/**.spec.ts Migrates Jest it to Vitest test + adds Vitest imports.
packages/utilities/src/lib/array/unique-with.function.ts Adds uniqueWith utility implementation.
packages/utilities/src/lib/array/unique-with.function.spec.ts Adds tests for uniqueWith.
packages/utilities/src/index.ts Exports uniqueWith.
packages/utilities/package.json Switches scripts to Vitest/Prettier/ESLint conventions + bumps version/engine.
packages/utilities/lint-staged.config.js Adds package lint-staged config.
packages/utilities/jest.config.js Removes Jest config.
packages/utilities/eslint.config.js Adds ESLint flat config using shared recommended preset.
packages/utilities/.lintstagedrc.yml Removes old lint-staged YAML config.
packages/publish-helper/vitest.config.js Adds per-package Vitest config.
packages/publish-helper/tsconfig.spec.json Adds spec TS config.
packages/publish-helper/tsconfig.lint.json Switches to shared lint TS config.
packages/publish-helper/tsconfig.json Simplifies tsconfig compilerOptions.
packages/publish-helper/tsconfig.jest.json Removes Jest TS config.
packages/publish-helper/src/publish-lib.ts Removes global no-console eslint disable.
packages/publish-helper/src/prepare-dist.ts Removes global no-console eslint disable.
packages/publish-helper/src/prepare-dist.spec.ts Migrates to Vitest imports.
packages/publish-helper/src/helpers.ts Removes global no-console eslint disable.
packages/publish-helper/package.json Switches to Vitest + bumps deps/versions/engine.
packages/publish-helper/lint-staged.config.js Adds lint-staged config.
packages/publish-helper/jest.config.js Removes Jest config.
packages/publish-helper/eslint.config.js Adds ESLint flat config with no-console override.
packages/publish-helper/.lintstagedrc.yml Removes old lint-staged YAML config.
packages/nest-logger/vitest.config.js Adds per-package Vitest config.
packages/nest-logger/tsconfig.spec.json Adds spec TS config (decorators metadata).
packages/nest-logger/tsconfig.lint.json Adds lint TS config.
packages/nest-logger/tsconfig.json Adds build TS config.
packages/nest-logger/test/mock-log.transport.ts Adds a mock transport for tests.
packages/nest-logger/src/services/logger.service.ts Adds Nest-facing LoggerService wrapper for @shiftcode/logger.
packages/nest-logger/src/services/logger.service.spec.ts Adds module/service tests using Nest testing utils.
packages/nest-logger/src/module/logger.module.ts Adds Nest dynamic module to wire transports + transient logger injection.
packages/nest-logger/src/model/nest-logger.ts Adds Nest LoggerService adapter for @shiftcode/logger.
packages/nest-logger/src/index.ts Exports module + service.
packages/nest-logger/package.json Introduces new package manifest (deps/exports/scripts).
packages/nest-logger/lint-staged.config.js Adds lint-staged config.
packages/nest-logger/eslint.config.js Adds ESLint flat config.
packages/nest-logger/README.md Adds package README/usage docs.
packages/logger/vitest.config.js Adds per-package Vitest config.
packages/logger/tsconfig.spec.json Adds spec TS config.
packages/logger/tsconfig.lint.json Switches to shared lint TS config.
packages/logger/tsconfig.json Simplifies tsconfig compilerOptions.
packages/logger/tsconfig.jest.json Removes Jest TS config.
packages/logger/test/console-mock.function.ts Migrates console mocking from Jest to Vitest.
packages/logger/src/**.spec.ts Migrates Jest tests to Vitest.
packages/logger/src/testing/spy-log.transport.ts Migrates mock fn from Jest to Vitest.
packages/logger/package.json Switches to Vitest + adjusts exports/license/versions/engine.
packages/logger/lint-staged.config.js Adds lint-staged config.
packages/logger/jest.config.js Removes Jest config.
packages/logger/eslint.config.js Adds ESLint flat config.
packages/logger/.lintstagedrc.yml Removes old lint-staged YAML config.
packages/lambda-utilities/vitest.config.js Adds per-package Vitest config.
packages/lambda-utilities/tsconfig.spec.json Adds spec TS config (decorators metadata).
packages/lambda-utilities/tsconfig.lint.json Adds lint TS config.
packages/lambda-utilities/tsconfig.json Adds build TS config.
packages/lambda-utilities/src/ssm/index.ts Adds SSM subpath export.
packages/lambda-utilities/src/ssm/fetch-ssm-string-param-value.function.ts Adds Lambda extension-based SSM parameter fetcher.
packages/lambda-utilities/src/s3/index.ts Adds S3 subpath export.
packages/lambda-utilities/src/lib/is-aws-lambda-env.function.ts Adds helper to detect Lambda runtime env.
packages/lambda-utilities/src/index.ts Adds main exports.
packages/lambda-utilities/package.json Introduces new package manifest (exports/scripts/peer deps).
packages/lambda-utilities/lint-staged.config.js Adds lint-staged config.
packages/lambda-utilities/README.md Adds package README/exports description.
packages/inversify-logger/vitest.config.js Adds per-package Vitest config.
packages/inversify-logger/tsconfig.spec.json Adds spec TS config (decorators metadata).
packages/inversify-logger/tsconfig.lint.json Adds lint TS config.
packages/inversify-logger/tsconfig.json Adds build TS config.
packages/inversify-logger/test/mock-log.transport.ts Adds mock transport for tests.
packages/inversify-logger/src/utils/log-transport-helper.ts Adds helper to bind transports into Inversify container.
packages/inversify-logger/src/utils/log-transport-helper.spec.ts Adds tests for transport binding helper.
packages/inversify-logger/src/services/logger.service.ts Adds Inversify LoggerService wrapper.
packages/inversify-logger/src/services/logger.service.spec.ts Adds integration-style container tests.
packages/inversify-logger/src/module/logger.module.ts Adds Inversify ContainerModule wiring LoggerService.
packages/inversify-logger/src/index.ts Exports module/service/helper.
packages/inversify-logger/package.json Introduces new package manifest.
packages/inversify-logger/lint-staged.config.js Adds lint-staged config.
packages/inversify-logger/README.md Adds package README/usage docs.
packages/iac-utilities/vitest.config.js Adds per-package Vitest config.
packages/iac-utilities/tsconfig.spec.json Adds spec TS config.
packages/iac-utilities/tsconfig.lint.json Adds lint TS config.
packages/iac-utilities/tsconfig.json Adds build TS config (JSON modules etc.).
packages/iac-utilities/test/*.json Adds schema fixtures for Ajv tests.
packages/iac-utilities/test/*.test.ts Adds JSON schema validation tests (Vitest).
packages/iac-utilities/src/*.ts Adds CLI entrypoints for scripts (yargs-based).
packages/iac-utilities/src/scripts/*.ts Adds various AWS/IaC automation utilities + helpers.
packages/iac-utilities/src/json-schemas/*.json Adds JSON schemas for config validation.
packages/iac-utilities/src/base/** Adds base runtime/IaC utilities + tests.
packages/iac-utilities/package.json Introduces new package manifest with bins and scripts.
packages/iac-utilities/lint-staged.config.js Adds lint-staged config.
packages/iac-utilities/eslint.config.js Adds ESLint flat config with no-console override.
packages/iac-utilities/README.md Adds package docs and script usage.
packages/eslint-plugin-rules/vitest.config.js Adds Vitest config with increased timeouts.
packages/eslint-plugin-rules/tsconfig.spec.json Adds spec TS config.
packages/eslint-plugin-rules/tsconfig.lint.json Switches to shared lint TS config.
packages/eslint-plugin-rules/tsconfig.json Removes outDir/declarationDir overrides (build relies on base).
packages/eslint-plugin-rules/test/rule-tester.ts Reworks RuleTester wiring to Vitest + ESM dir handling.
packages/eslint-plugin-rules/src/rules/* Updates spec imports + adds new rule no-spread-array-math.
packages/eslint-plugin-rules/src/index.ts Registers new rule in plugin exports.
packages/eslint-plugin-rules/package.json Switches from Jest to Vitest + license/version updates.
packages/eslint-plugin-rules/lint-staged.config.js Adds lint-staged config.
packages/eslint-plugin-rules/jest.config.js Removes Jest config.
packages/eslint-plugin-rules/.lintstagedrc.yml Removes old lint-staged YAML config.
packages/eslint-config-recommended/tsconfig.lint.json Switches to shared lint TS config.
packages/eslint-config-recommended/tsconfig.json Simplifies tsconfig compilerOptions.
packages/eslint-config-recommended/src/index.ts Adds default ignores + refactors “test/non-src” rule relaxations.
packages/eslint-config-recommended/package.json Switches scripts + bumps plugin dependency version/license/engine.
packages/eslint-config-recommended/lint-staged.config.js Adds lint-staged config.
packages/eslint-config-recommended/README.md Updates sample config filename.
packages/eslint-config-recommended/.lintstagedrc.yml Removes old lint-staged YAML config.
packages/cdk-utilities/vitest.config.js Adds per-package Vitest config.
packages/cdk-utilities/tsconfig.spec.json Switches to root tsconfig.spec.json.
packages/cdk-utilities/tsconfig.lint.json Adds lint TS config.
packages/cdk-utilities/tsconfig.json Adds build TS config.
packages/cdk-utilities/src/lib/utils/* Adds CloudFront function generators + types + tests.
packages/cdk-utilities/src/lib/*.ts Adds new CDK constructs/utilities.
packages/cdk-utilities/src/index.ts Exports new constructs/utilities.
packages/cdk-utilities/package.json Introduces new package manifest.
packages/cdk-utilities/lint-staged.config.js Adds lint-staged config.
packages/cdk-utilities/eslint.config.js Adds ESLint flat config with internal module allowlist.
packages/cdk-utilities/README.md Adds package README.
packages/branch-utilities/vitest.config.js Adds per-package Vitest config.
packages/branch-utilities/tsconfig.spec.json Switches to root tsconfig.spec.json.
packages/branch-utilities/tsconfig.lint.json Switches to shared lint TS config.
packages/branch-utilities/tsconfig.json Simplifies tsconfig compilerOptions.
packages/branch-utilities/src/lib/base.utils.spec.ts Migrates to Vitest imports.
packages/branch-utilities/package.json Switches scripts to Vitest + bumps version/engine.
packages/branch-utilities/lint-staged.config.js Adds lint-staged config.
packages/branch-utilities/jest.config.js Removes Jest config.
packages/branch-utilities/.lintstagedrc.yml Removes old lint-staged YAML config.
packages/airtable-syncer/vitest.config.js Adds Vitest config with SWC plugin + setup file.
packages/airtable-syncer/tsconfig.*.json Adds build/lint/spec TS configs.
packages/airtable-syncer/test/** Adds test setup, mocks, and fixtures.
packages/airtable-syncer/src/** Introduces Airtable sync services/module/config/models/static helpers + tests.
packages/airtable-syncer/package.json Introduces new package manifest.
packages/airtable-syncer/lint-staged.config.js Adds lint-staged config.
packages/airtable-syncer/eslint.config.js Adds ESLint flat config with unsafe TS rule relaxations.
packages/airtable-syncer/README.md Adds package README/usage docs.
packages/airtable-mapper/vitest.config.js Adds per-package Vitest config.
packages/airtable-mapper/tsconfig.*.json Adds build/lint/spec TS configs.
packages/airtable-mapper/src/** Introduces mapping/models/converters/public API + tests.
packages/airtable-mapper/package.json Introduces new package manifest.
packages/airtable-mapper/lint-staged.config.js Adds lint-staged config.
packages/airtable-mapper/README.md Adds package README/positioning docs.
Comments suppressed due to low confidence (2)

.prettierignore:1

  • dist/ was previously ignored by Prettier; removing .prettierignore means npm run format (prettier --write .) may start formatting generated build output, slowing formatting and creating noisy diffs. Re-introduce a Prettier ignore for dist/** (and any other build artifacts) or pass an ignore file/path explicitly.
    package.json:38
  • The workflow now tests Node 24 and 25, but the root engines.node only allows 22.x. This mismatch can cause confusing warnings or failures in environments that enforce engines. Either widen the root engine range to include the tested versions, or adjust the CI matrix to match the supported range.
  "engines": {
    "node": "^22.15.0"
  }

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

}

verbose(message: any) {
this.debug([message])
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verbose() currently wraps the message in an array and then passes it to debug(), which itself wraps the argument in an array. This results in nested arrays being logged (e.g. [[message]]). Call this.debug(message) (or delegate directly to this.logger.debug([message])) to keep the payload shape consistent with the other methods.

Suggested change
this.debug([message])
this.debug(message)

Copilot uses AI. Check for mistakes.
Comment on lines +17 to +23
if (!isBound(S3Helper)) {
bind(SnsPublisher).toSelf().inSingletonScope()
}

if (!isBound(S3Helper)) {
bind(S3Helper).toSelf().inSingletonScope()
}
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SnsPublisher binding is guarded by !isBound(S3Helper), which is unrelated. If a consumer pre-binds S3Helper but not SnsPublisher, the module will skip binding SnsPublisher and DI will fail. The guard for SnsPublisher should check isBound(SnsPublisher) (and the S3Helper guard should remain isBound(S3Helper)).

Copilot uses AI. Check for mistakes.
Comment on lines +4 to +8
export abstract class AttachmentUrlResolver {
abstract createUrl(id: string, filename: string): string

abstract getId(s3Key: string): string
}
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The parameter order for createUrl(id, filename) is easy to misuse and appears to be used inconsistently in the repo (some implementations/tests treat the first argument as filename). Consider standardizing the signature to createUrl(id: string, filename: string) everywhere (including implementations and call sites) or renaming parameters to make intent unambiguous (and updating tests accordingly).

Copilot uses AI. Check for mistakes.
super()
}

createUrl(filename: string, id: string): string {
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AttachmentUrlResolver.createUrl() is declared as (id: string, filename: string), but this override effectively treats the second argument as the ID. Because both are string, TypeScript won’t catch the swap, but generated URLs will be wrong wherever callers pass (id, filename). Align the override signature and parameter usage with the abstract definition (or update the abstract definition if the intended order is (filename, id)).

Suggested change
createUrl(filename: string, id: string): string {
createUrl(id: string, filename: string): string {

Copilot uses AI. Check for mistakes.
const gitHubPrJson = execSync('gh pr list --json headRefName,title,isDraft,closed', { encoding: 'utf8' }).trim()
const gitHubPrs: GitHubPr[] = JSON.parse(gitHubPrJson)

const branchNameOverride = process.env['GITHUB_BASE_REF']
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GITHUB_BASE_REF is the PR target branch (e.g. main), while headRefName is the PR source branch. Comparing headRefName to GITHUB_BASE_REF will almost always be false for PRs. If you want the PR source branch, GitHub Actions exposes it as GITHUB_HEAD_REF.

Suggested change
const branchNameOverride = process.env['GITHUB_BASE_REF']
const branchNameOverride = process.env['GITHUB_HEAD_REF']

Copilot uses AI. Check for mistakes.
const opts = await options
const clientConfigUrl = await readFromStackOutput(opts.outputs, opts.key)

const raw = execSync(`curl ${clientConfigUrl}`, { encoding: 'utf8' }).trim()
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Building a shell command with an unescaped URL enables command injection if clientConfigUrl can be influenced (it’s read from a JSON outputs file). Prefer using fetch()/https to retrieve the content, or at minimum use execFileSync('curl', [clientConfigUrl]) to avoid shell interpretation.

Copilot uses AI. Check for mistakes.
export function isAwsLambdaEnv(): boolean {
// aws sets the AWS_EXECUTION_ENV so does the serverless framework -
// to detect local invocations SLS additionally sets IS_LOCAL env var
return process && !!process.env['AWS_EXECUTION_ENV'] && !process.env['IS_LOCAL']
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Referencing process directly can throw a ReferenceError in non-Node runtimes (or certain bundling targets) because process may be undefined as a global identifier. Use typeof process !== 'undefined' before accessing it.

Suggested change
return process && !!process.env['AWS_EXECUTION_ENV'] && !process.env['IS_LOCAL']
return typeof process !== 'undefined'
&& !!process.env['AWS_EXECUTION_ENV']
&& !process.env['IS_LOCAL']

Copilot uses AI. Check for mistakes.
trailingComma: 'all',
}

export default config
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file uses ESM export default, but if the repo root is not configured as ESM (no "type": "module" in the root package.json), Node will treat prettier.config.js as CommonJS and this will fail to load. Either rename to prettier.config.mjs, add "type": "module" at the repo root, or switch to module.exports = config.

Suggested change
export default config
module.exports = config

Copilot uses AI. Check for mistakes.
```typescript
import { Container } from 'inversify'
import { loggerModule, bindLogTransport } from '@shiftcode/inversify-logger'
import { NodeConsoleLogTransport, NodeConsoleLogTransportConfig } from '@shiftcode/log-transpports'
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct the package name typo: @shiftcode/log-transpports -> @shiftcode/log-transports.

Suggested change
import { NodeConsoleLogTransport, NodeConsoleLogTransportConfig } from '@shiftcode/log-transpports'
import { NodeConsoleLogTransport, NodeConsoleLogTransportConfig } from '@shiftcode/log-transports'

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,82 @@
# nest-logger

> 🎯 Target runtime: es2023 ([Node >= 20](https://node.green/#ES2023))
Copy link

Copilot AI Mar 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README states “Node >= 20”, but the package engines.node is >=22.10.2. Update the README to match the actual supported Node version range to avoid misleading consumers.

Suggested change
> 🎯 Target runtime: es2023 ([Node >= 20](https://node.green/#ES2023))
> 🎯 Target runtime: es2023 ([Node >= 22.10.2](https://node.green/#ES2023))

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants